Proposed by Rodrigo Bonifácio (profile, biography) Don't forget to submit this proposal to official Google Melange site too!
How will I do that project
First, I have to check with the project mentors which are the priorities of the Coral project. Visiting the project web site, I realised that several missing features still exist, such as supporting for pipes and filters and improving the file system and OS processes manipulation. Based on the identified priorities, I will (a) study what have already been implemented and (b) get familiarised with the source code and development tools. Particularly, I have great interest in extending Coral to improve the IO and OS processes mechanisms.
The next step is to design new language constructs (or primitives) to Coral, in order to, for instance, allow Smalltalkers to interact to the file system (listing, renaming, deleting, copying files, and so on) or handle OS processes (starting or killing process) using the scripting language. We could search on the literature to find out good abstractions proposed to same goal.
Next, we will proceed by *implementing* the new language constructs. In fact, this means that we have to:
- define the concrete and abstract syntaxes
- extend the existing Coral interpreter
- evolve the existing IDE to support the proposed language constructs
Finally, we should make our results available to the community, by means of packaging the language extensions in a usable format and explaining how to use the Coral scripting language (particularly the new constructs developed in this project).
What methodologies will I use
I want to use an iterative, interpreter based approach for writing language extensions and interpreters. Iterative here means that we will split the project in small increments, where each increment, during the *Development Phase*, should focus on a single language extension or construct. It would be interesting to design, implement, and test one language construct (or a small number of language constructs) on each iteration.
Priory to the development phase, I need to spend some time planning the project, learning about the current version of Coral, and configuring my development environment. In this proposal I will use the term Initiation Phase to name this moment. Finally, after the development phase, I will work on publishing the project results (software packaging, tutorials, and so on). Depending on the challenges and contributions of this project, it would be interesting to present the results on a conference. I will use the term Transition to denote this last phase.
Regarding the project management approach, we could use the Scrum methodology, creating a *backlog* with the language extensions that should be implemented. In addition, the project mentors could interchange the roles of Project Owner and Scrum Master; and the team could be formed by the students applying to this project.
Suggested timeline and milestones
a) Initiation Phase (deadline: 05/24)
Milestones:
a.1) Precisely define the project goals and scope
a.2) Create a backlog with the language constructs
a.3) Create a development plan
b) Development Phase (deadline: 07/15)
Milestone of each development iteration (or sprint)
b.1) Design language constructs
b.2) Define concrete and abstract syntax
b.3) Implement interpreters for the language constructs
b.4) Evolve Squeak IDE
b.5) Test!
c) Transition Phase (deadline: 08/09)
Milestone
c.1) Language extensions available to the community, including software packaging, tutorials, and research papers.
Where I see the risks
The grater risk that I see is my low familiarity with Smalltalk and Squeak. However, I am quite excited to work on this project and have already started to read books and tutorials related to both subjects.
How the results will look like
The main outcomes of this project are:
- New constructs to the Coral scripting language
- Software packages with IDE and interpreters
- Tutorials
- Depending on the contributions, research papers.
|